import { Route, Switch, Redirect } from 'react-router-dom'
import Login from './pages/login/login' // 登录页面
import Register from './pages/login/register'  //注册页面
import Main from './pages/main' // 主页面
import store from '@/store'
import {post} from '@/lib'

let hasGetPersonalInfo = false  //是否拉取过人员的信息

// 使用高阶组件来进行登录鉴权
function checkLogin(Component,isLogin){
  return props =>{
    if(!isLogin){
      return <Component {...props}></Component>
    }
    // 需要登录时，判断有没有登陆过。如果登录过，放行，否则跳转到登录页面
    if(localStorage.userId){
      if(!hasGetPersonalInfo){
        hasGetPersonalInfo = true
        //拉取个人信息设置给全局状态
        post('/detail/member',{id:localStorage.userId}).then(data=>{
          store.dispatch({type:'setPersonal',payload:data.result})
        })
      }
      return <Component {...props}></Component>
    }
    // 跳转至登录页面
    return <Redirect to='/login'></Redirect>
  }
}

const LoginRouter = checkLogin(Login,false) //高阶组件 
const RegisterRouter = checkLogin(Register,false)
const MainRouter = checkLogin(Main,true)

function App() {
  return (
    <div>
      {/* 一级路由 */}
      <Switch>
        <Route path="/login" component={LoginRouter}></Route>
        <Route path="/register" component={RegisterRouter}></Route>
        <Route path="/" component={MainRouter}></Route>
      </Switch>
    </div>
  );
}

export default App;
